/* 工具 */
import util from '@/common/js/util.js';
import api from '@/common/js/api.js';

export default {
	test(callback) {
		console.log('工具-test in', callback)
	},
	// 页面跳转
	pageTo(path, data) {
		if(!data) vk.navigateTo(path);
		else{
			vk.navigateTo({
				url: path,
				success: (res) => {
					// 通过eventChannel向被打开页面传送数据
					res.eventChannel.emit('data', data)
				}
			})
		}
	},
	
	// 组装PDF访问的路径
	getPdfUrl(filepath){
		let fileUrl = filepath; // pdf路径
		let viewerUrl = window.location.pathname + 'static/hybrid/pdf.html'; // hybrid路径 pdf预览组件。前置斜杠在window.location.pathname中
		let webviewUrl; // web-view调用路径
		
		webviewUrl = `${viewerUrl}?url=${encodeURIComponent(fileUrl)}`;
		console.log('====$tools webviewUrl====', webviewUrl)
		
		return webviewUrl;
	},
	
	// 检测是否需要登录
	checkLogin() {
		if (vk.pubfn.isNull(vk.getVuex('$user.userInfo'))) {
			// 不关闭页面，直接跳转到登录页，登录成功自动返回当前页面
			vk.navigateToLogin({
				mode: "navigateTo"
			});
		}
	},
	
	// 入口：上传图片 返回base64，不带前缀'data:image/png;base64,'
	chooseImage(callback) {
		// console.log('工具-上传图片 in', callback)
		uni.chooseImage({
			count: 1, //默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: (res) => {
				// console.log('工具-上传图片 uni.chooseImage', res, res.tempFilePaths[0])

				// #ifdef MP-WEIXIN
				uni.getFileSystemManager().readFile({
					filePath: res.tempFilePaths[0], //选择图片返回的相对路径
					encoding: 'base64', //编码格式
					success: res => { //成功的回调
						// console.log('工具-上传图片 WX', res)
						callback(res.data.replace(/[\r\n]/g, '')); // 将回车换行换为空字符''
					}
				})
				// #endif
				// #ifndef MP-WEIXIN
				uni.request({
					url: res.tempFilePaths[0],
					method: 'GET',
					responseType: 'arraybuffer',
					success: res => {
						// console.log('工具-上传图片 H5', res)
						callback(uni.arrayBufferToBase64(res.data).replace(/[\r\n]/g, ''));
					}
				})
				// #endif
			}
		});
	},
	
	// 入口：位置授权
	getAuthorizeInfo(callback) {
		// #ifndef MP
		this.getLocationInfo(callback);
		// #endif
		// #ifdef MP-WEIXIN
		uni.getSetting({ // 检查是否已授权
			success: (res) => {
				// console.log('uni.getSetting', res)
				if (res.authSetting['scope.userLocation']) { // 已授权，调用位置
					this.getLocationInfo(callback);
				} else { // 未授权，发起授权请求
					uni.authorize({
						scope: 'scope.userLocation',
						success: () => { // 允许授权
							this.getLocationInfo(callback);
						},
						fail: () => { // 拒绝授权
							this.openConfirm(callback);
							console.log("拒绝授权")
						}
					})
				}
			},
			fail(err) {
				console.log('位置授权err', err)
				this.$util.toast('fail' + JSON.stringify(err))
				callback(null);
			}
		})
		// #endif
	},
	// 当用户第一次拒绝后再次请求授权
	openConfirm(callback) {
		uni.showModal({
			title: '请求授权当前位置',
			content: '需要获取您的地理位置，请确认授权',
			success: (res) => {
				if (res.confirm) {
					// 确认授权，打开设置界面
					uni.openSetting({
						success: (res) => {
							// console.log('openSetting success', res)
							if (res.authSetting && res.authSetting['scope.userLocation']) {
								this.getLocationInfo(callback);
							}else{
								uni.showToast({
									title: '未授权，无法获得位置信息',
									icon: 'none',
									duration: 1000
								})
								callback(null);
							}
						},
						fail: err => {
							// console.log('openSetting fail', err)
							uni.showToast({
								title: '打开设置界面出错，无法获得位置信息',
								icon: 'none',
								duration: 1000
							})
							callback(null);
						}
					});
				} else if (res.cancel) {
					uni.showToast({
						title: '你拒绝了授权，无法获得位置信息',
						icon: 'none',
						duration: 1000
					})
					callback(null);
				}
			}
		});
	},
	
	// 获取地理位置 使用逆地址解析
	getLocationInfo(callback) {
		// console.log('getLocation in');
		uni.getLocation({
			type: 'wgs84',
			// geocode: 'true',
			success: (res) => {
				// console.log('当前位置：', res);
				// this.formData.longitude = res.longitude; // 经度116.43213 123.38631725579961
				// this.formData.latitude = res.latitude; // 纬度38.76623 41.838198236313424
				
	
				// let location = res.longitude + ',' + res.latitude;
				let location = res.latitude + ',' + res.longitude;
				let data = {
					// key: '4fe6eb2b047b4733fdb399ff39b476f1',
					location,
					ak: getApp().globalData.baiduAK,
					output: 'json', 
					coordtype: 'wgs84ll',
				}
				// let url = `https://restapi.amap.com/v3/geocode/regeo`; // 高德
				// https://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
				let url = `https://api.map.baidu.com/reverse_geocoding/v3/`; // 百度
				vk.request({
					url,
					method: "GET",
					header: {
						"content-type": "application/x-www-form-urlencoded",
					},
					data,
					success: (res) => {
						// console.log('逆地址解析：', res);
						// this.position = res.regeocode;
						
						// this.position = res.result;
						// this.formatPosition();
						
						callback(res.result);
					},
					fail: (err) => {
						vk.alert(JSON.stringify(err), '获取定位失败');
						callback(null);
					}
				});
			},
			fail: err => {
				console.log('获取定位失败：', err);
				vk.alert('请打开手机定位后重新进入应用', '手机定位未开启');
				callback(null);
			}
		});
	},
}
